﻿using Cls_BoticasySaludBE;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;
using BL = Cls_BoticasySaludBL;
using BE = Cls_BoticasySaludBE;

namespace Wcf_ComunicacionByS
{
    // NOTA: puede usar el comando "Rename" del menú "Refactorizar" para cambiar el nombre de clase "ServiciosByS" en el código, en svc y en el archivo de configuración a la vez.
    // NOTA: para iniciar el Cliente de prueba WCF para probar este servicio, seleccione ServiciosByS.svc o ServiciosByS.svc.cs en el Explorador de soluciones e inicie la depuración.
    public class ServiciosByS : IServiciosByS
    {
        public List<Cls_BoticasySaludBE.Categoria> ObtenerCategorias()
        {
            BL.CategoriaBL ObjetoNegocio = new BL.CategoriaBL();
            return ObjetoNegocio.GetListarCategoriaBL();
        }

        public Usuario AutenticacionUsuario(string Usuario, string Contrasena)
        {
            //bool UsuarioEncontrado = true;
            BL.LoginBL ObjetoNegocio = new BL.LoginBL();      
            Usuario ObjetoUsuario = new Usuario();
            ObjetoUsuario.User = Usuario.Trim();
            ObjetoUsuario.Contrasena = Contrasena.Trim();
            //if (ObjetoNegocio.GetUsuarioAutenticadoBL(ObjetoUsuario).Count() <= 0)
            //{
            //    UsuarioEncontrado = false;
            //}
            return ObjetoNegocio.GetUsuarioAutenticadoBL(ObjetoUsuario)[0];
        }

        public List<Producto> BuscarProducto(string ProductoBusqueda)
        {
            BL.ProductoBL ObjetoNegocio = new BL.ProductoBL();
            BE.Producto Producto = new Producto();
            Producto.Descripcion = ProductoBusqueda;
            return ObjetoNegocio.GetBuscarProductoBL(Producto);
        }

        public bool InsertarPedido(List<Pedido> pedido)
        {
            bool Estado = true;
            BL.PedidoBL ObjetoNegocio = new BL.PedidoBL();
            CabPedido CabeceraPed = new CabPedido();
            CabeceraPed.CodigoCliente = pedido[0].CodigoCliente;
            CabeceraPed.MontoTotal = pedido[0].MontoTotal;
            CabeceraPed.Direccion = pedido[0].Direccion;
            CabeceraPed.Altitud = pedido[0].Altitud;
            CabeceraPed.Latitud = pedido[0].Latitud;
            int CodigoCabPedido = ObjetoNegocio.InsertCabPedidoBL(CabeceraPed);
            if(CodigoCabPedido <= 0)
            {
                Estado = false;
            }
            else
            {
                for (int i = 0; i < pedido.Count; i++)
                {
                    DetPedido DetallePed = new DetPedido();
                    DetallePed.CodigoCabPedido = CodigoCabPedido;
                    DetallePed.CodigoProducto = pedido[i].CodigoProducto;
                    DetallePed.Cantidad = pedido[i].Cantidad;
                    DetallePed.Subtotal = pedido[i].Subtotal;
                    int CodDetPedido = ObjetoNegocio.InsertDetPedidoBL(DetallePed);
                    if (CodDetPedido <= 0)
                    {
                        Estado = false;
                    }
                }
            }
            return Estado;
        }
    }
}
